package com.ruoyi.tsjData.service.impl;

import java.util.ArrayList;
import java.util.List;
import java.util.concurrent.Future;

import com.ruoyi.common.utils.DateUtils;
import com.ruoyi.common.utils.calculate.BezierCurveUtil;
import com.ruoyi.tsjData.domain.plat.DataTshjTyxn;
import com.ruoyi.tsjData.domain.plat.DataTshjWsh;
import com.ruoyi.tsjData.mapper.DataTshjWshMapper;
import com.ruoyi.tsjData.service.IDataTshjWshService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.scheduling.annotation.Async;
import org.springframework.scheduling.annotation.AsyncResult;
import org.springframework.stereotype.Service;


/**
 * 提升机-温升测试Service业务层处理
 * 
 * @author ruoyi
 * @date 2023-10-25
 */
@Service
public class DataTshjWshServiceImpl implements IDataTshjWshService
{
    @Autowired(required = false)
    private DataTshjWshMapper dataTshjWshMapper;

    /**
     * 查询提升机-温升测试
     * 
     * @param wsId 提升机-温升测试主键
     * @return 提升机-温升测试
     */
    @Override
    public DataTshjWsh selectDataTshjWshByWsId(Long wsId)
    {
        return dataTshjWshMapper.selectDataTshjWshByWsId(wsId);
    }

    /**
     * 温升测试数据
     * @param dataTaskId
     * @return
     */
    @Async("threadPoolKy")
    @Override
    public Future<List<DataTshjWsh>> selectWsh(Long dataTaskId) {
        List<DataTshjWsh> dataTshjWshEntities = new ArrayList<>();
        dataTshjWshEntities = dataTshjWshMapper.selectDataTshjWshByDataTaskId(dataTaskId);
        if (dataTshjWshEntities.size() != 0) {
            dataTshjWshEntities.forEach(item -> {
                item.setGzwd1ChartLineDTO(BezierCurveUtil.calPoints(item.getGzwd1List(), 1f, true));
                item.setGzwd2ChartLineDTO(BezierCurveUtil.calPoints(item.getGzwd2List(), 1f, true));
                item.setLqwd1ChartLineDTO(BezierCurveUtil.calPoints(item.getLqwd1List(), 1f, true));
                item.setLqwd2ChartLineDTO(BezierCurveUtil.calPoints(item.getLqwd2List(), 1f, true));
            });
        }
        return new AsyncResult<>(dataTshjWshEntities);
    }

    /**
     * 查询提升机-温升测试
     *
     * @param dataTaskId 提升机-温升测试主键id
     * @return 提升机-温升测试
     */
    @Override
    public List<DataTshjWsh> selectDataTshjWshByDataTaskId(Long dataTaskId) {
        return dataTshjWshMapper.selectDataTshjWshByDataTaskId(dataTaskId);
    }

    /**
     * 查询提升机-温升测试列表
     * 
     * @param dataTshjWsh 提升机-温升测试
     * @return 提升机-温升测试
     */
    @Override
    public List<DataTshjWsh> selectDataTshjWshList(DataTshjWsh dataTshjWsh)
    {
        return dataTshjWshMapper.selectDataTshjWshList(dataTshjWsh);
    }

    /**
     * 新增提升机-温升测试
     * 
     * @param dataTshjWsh 提升机-温升测试
     * @return 结果
     */
    @Override
    public int insertDataTshjWsh(DataTshjWsh dataTshjWsh)
    {
        dataTshjWsh.setCreateTime(DateUtils.getNowDate());
        return dataTshjWshMapper.insertDataTshjWsh(dataTshjWsh);
    }

    /**
     * 温升数据批量新增
     * @param dataTshjWshs 提升机-温升测试
     * @return
     */
    @Override
    public int batchDataTshjWsh(List<DataTshjWsh> dataTshjWshs) {
        return dataTshjWshMapper.batchDataTshjWsh(dataTshjWshs);
    }

    /**
     * 修改提升机-温升测试
     * 
     * @param dataTshjWsh 提升机-温升测试
     * @return 结果
     */
    @Override
    public int updateDataTshjWsh(DataTshjWsh dataTshjWsh)
    {
        dataTshjWsh.setUpdateTime(DateUtils.getNowDate());
        return dataTshjWshMapper.updateDataTshjWsh(dataTshjWsh);
    }

    /**
     * 批量修改提升机-温升测试
     * @param dataTshjWshs 提升机-温升测试
     * @return
     */
    @Override
    public int updateBatchDataTshjWsh(List<DataTshjWsh> dataTshjWshs) {
        return dataTshjWshMapper.batchDataTshjWsh(dataTshjWshs);
    }

    /**
     * 修改温升任务状态
     * @param dataTaskIds 提升机-温升测试任务ids
     * @return
     */
    @Override
    public int updateDataTshjWshByDataTaskIds(Long[] dataTaskIds) {
        return dataTshjWshMapper.updateDataTshjWshByDataTaskIds(dataTaskIds);
    }

    /**
     * 变更温升状态为2
     * @param dataTaskId
     * @param wsId
     * @return
     */
    @Override
    public int updateDataTshjWshByWshId(Long dataTaskId, Long wsId) {
        return dataTshjWshMapper.updateDataTshjWshByWshId(dataTaskId, wsId);
    }

    /**
     * 批量删除提升机-温升测试
     * 
     * @param wsIds 需要删除的提升机-温升测试主键
     * @return 结果
     */
    @Override
    public int deleteDataTshjWshByWsIds(Long[] wsIds)
    {
        return dataTshjWshMapper.deleteDataTshjWshByWsIds(wsIds);
    }

    /**
     * 删除提升机-温升测试信息
     * 
     * @param wsId 提升机-温升测试主键
     * @return 结果
     */
    @Override
    public int deleteDataTshjWshByWsId(Long wsId)
    {
        return dataTshjWshMapper.deleteDataTshjWshByWsId(wsId);
    }
}
